Computer Programming I
Course Information: 2010-2011
Coach Payne
(Subject to Revision)

Computer Programming I will involve the students in the following activities.
Grading for Computer Programming I is based upon a total points scheme rather than individual assignment percent values. The point totals will generally be as follows:

Major Tests…..………80-120 points
Projects…….…...……80-120 points
Quizzes……………....20-50 points
Daily assignments…...10-50 points
Homework……….……5-10 points

The following items are required:
3-Ring notebook
Notebook paper
Pen or Pencil
A flash or thumb drive is highly recommended, but optional.

Most assignments and class information may be found at the site http://coachpaynes.blogspot.com/ .

Absolutely no food, drink (other than water, with permission), or electrical devices are allowed in the classroom.

Unauthorized internet use is not allowed, and can result in having computer time at school removed.

Course Guide

Unit 1 (~0.5 weeks) - Introduction to Computer Programming - During the first portion of the course we will introduce the following concepts, including terminology:


  1. How computers work
    1. What is a computer?
    2. Terminology (There are many sites. These are just a few!)
      1. http://www.techterms.com/
      2. http://webopedia.com/
      3. http://en.wikipedia.org/wiki/Computer_terminology
      4. http://whatis.techtarget.com/definitionsCategory/0,289915,sid9_tax281874,00.html
  2. Major hardware components in computing systems
  3. Introduction to program design
    1. Reading and understanding a problem description
    2. Establishing goals
    3. Algorithms
    4. Documentation best practices
  4. Declaring variables, constants, and methods
  5. Introduction to coding concepts:
    1. Commands
    2. Methods
    3. Loops
  6. The social and ethical ramifications of computer use
  7. Introduction to testing and debugging

Unit 2 (~5 weeks) - Learning to Program with Ruby – Console-based languages were used for many years to train students in both terminology and coding. Ruby is a dynamic, reflective, general purpose object-oriented programming language. It is an open source programming language with a focus on simplicity and productivity, and it has an elegant syntax that is natural to read and easy to write. (from WikiPedia and the Ruby website (http://www.ruby-lang.org/en/)).

Part I: Introduction to Ruby
    • Getting Started with Ruby
      • Downloading
      • Mapping to the H:// drive or a flash drive
      • The interpreter, console, and textpad
      • A First Program
Part II: Programming in Ruby: Program Design and Implementation
      • Numbers
        • Simple Arithmetic
        • Short Assignments and Projects
      • Letters
        • String Arithmetic
        • Numbers and Digits
        • Short Assignments and Problems
      • Variables, Assignments, and Methods
        • Usage
        • Conversions
        • Built-in Methods
        • Fancy Methods
        • Mathematical Methods, Random Numbers, and the Math Object
        • Short Assignments and Problems
      • Flow Control
        • Comparison Methods
        • Branching
        • Looping
        • Introduction to Logic
        • Short Assignments and Problems
      • Arrays and Iterators
        • Array Methods
        • Short Assignments and Problems
      • Writing Methods
        • Method Parameters
        • Local Variables
        • Return Values
        • Recursion
        • Sorting
        • Short Assignments and Problems
      • Files
        • Reading, Writing, Saving, Loading
        • Short Assignments and Problems
      • Classes
        • More Built-In Classes
        • Writing Classes
        • Short Assignments and Problems
      • Blocks and Procs
        • Methods that take Procs
        • Methods that Return Procs
        • Passing Blocks into Methods
        • Short Assignments and Problems
Unit 3 (~5 weeks) - Learning to Program with Alice - "Visual" coding languages such as Alice, Karel the Robot, and Scratch have been used in high school and college computer science classrooms to immerse students in programming prior to exposing them to an abstract programming language like Java. Alice is object oriented and puts students on the approach for continuing forward with AP computer science using Java. The class will follow an eight week Alice curriculum designed to familiarize students with the following concepts:

Part I: Introduction to Alice

    • Getting Started with Alice
      • Introduction
      • Alice Concepts
    • Text and 2D Graphic Images
    • Programming in Alice: Program Design and Implementation
      • Scenarios and Storyboards
      • A First Program
      • Programming In Alice: Putting Together the Pieces
      • Built-in Questions and Expressions
      • Simple Control Structures
      • Engineering Look and Feel
  • Part II: Object-Oriented and Event-driven Programming Concepts
      • Classes and Objects
    • Methods and Parameters
      • World-level Methods
      • Parameters
      • Class-level Methods and Inheritance
      • Visible and Invisible Objects
    • Interactive Programs: Events and Event-Handling
      • Interactive Programming: Events and Event Handlers
      • Passing Parameters to Event Handlers
      • Events
  • Part III: Using Questions and Control Statements
    • Questions (Functions) and If/Else
      • Questions
      • Execution Control with If/Else and Boolean Questions
      • Random Numbers and Random Motion
    • Repetition: Definite and Indefinite Loops
      • Loops
      • While – an Indefinite Loop
      • Events and Repetition
    • Repetition: Recursion
      • Introduction to Recursion
      • Another Flavor of Recursion
      • Camera and Animation Controls
  • Part IV: Advanced Topics
    • Lists and List Processing
      • Lists
      • List Search
      • Poses
    • Variables and Revisiting Inheritance
      • Variables
      • An Array Visualization Using an Index Variable
      • Debugging with Watch and Text Output

Unit 4 (~5 weeks) – Karel J Robot
  • Configure Karel J Robot API to work with chosen IDE
  • Basic programming through Karel J Robot API
    • Learn primitive robot instructions and simple programs
      • Create robot world with walls and beepers
      • Changing positions
      • Tuning in place
      • Beeper handling
      • Robot Java class descriptions
      • Executing and completing program
      • Learning program form
      • Error shut offs and programming errors
      • Bugs and debugging
  • Extending robot programming through Java
    • Defining new classes of robots
    • Defining new methods
    • Creating and modifying inherited methods
    • Stepwise program refinement
      • A technique for planning, implementing and analyzing programs
    • Advantages of using new instruction
    • Creating understandable programs through formatting and documentation
  • Learning conditionally executed instructions
    • IF instructions
    • Methods for robot condition testing
    • Writing new predicates
    • Understanding the faceNorth method through recursive and non-recursive implementation
    • Determine correctness of the IF instruction
    • IF/ELSE instruction
    • Nesting IF instructions
    • Analyzing more complex tests

  • Learning Instructions that Repeat
    • The FOR-Loop instruction
    • The WHILE instruction using a 4 step process
    • Understanding infinite executions
    • Nesting while Loop

Integrated Project: (3 days)
The Great Maze Escape Project

  • Major Project

Unit 4 (~2 weeks) – Scratch
  • Unit 1
    • Lesson 1: Motion and Sound
    • Lesson 2: Repeating Actions
    • Lesson 3: Playing with Color
    • Lesson 4: Creating Your Own Sprites
    • Lesson 5: Speaking and Thinking
    • Lesson 6: Creating Image Effects
    • Lesson 7: Sounds, Voices and Music
    • Lesson 8: Creating Animations

  • Unit 2
    • Lesson 1: Move, Turn and Point
    • Lesson 2: Go and Glide, Changing Positions
    • Lesson 3: Bouncing, Locating the Sprite
    • Lesson 4: Changing Costumes
    • Lesson 5: Speaking, Thinking and Graphic Effects
    • Lesson 6: Size, Presence and Layers

  • Unit 3
    • Lesson 1: Playing Sounds
    • Lesson 2: Playing Drums
    • Lesson 3: Playing Instruments
    • Lesson 4: Pen and Color Control
    • Lesson 5: Pen Size, Shade, Stamp

  • Unit 4
    • Lesson 12: Beginning and Waiting
    • Lesson 13: Repeating Actions
    • Lesson 14: Broadcasting
    • Lesson 15: Conditional Actions
    • Lesson 16: Stopping

The reminder of the semester will be devoted to Java and a Major Project…